RS40B - uživatelský manuál


2.6.8 - Pozice ramene

Pro definování pozice ramene máme k dispozici dva datové typy. Typ joint určuje pozici ramene podle úhlu rotace jednotlivých os robota. Typ point udává pozici v kartézských souřadnicích.
Dále jsou k dispozici typy frame, tool a config. Typ frame slouží k nastavení pracovní oblasti ramene a jeho geometrie. Typ tool popisuje nástroj, jeho geometrii a nastavuje také rychlost ramene. A typ config popisuje složitější koncept konfigurace ramene.

Typ joint

Typ joint definuje pozici každé osy ramene ve stupních podle úhlu rotace. Jedná se o strukturovaný typ, respektivě o pole velikosti 6. První 4 pozice jsou určeny k nastavení úhlu jednotlivých os a další dvě jsou pro robota RS40B nevyužity, protože má pouze 4 osy.
Stejně jako u jednoduchách datových typů, lze i datové typy joint mezi sebou vzájemě porovnávat zda se rovnají, jsou větší či menší, nebo je zvájemě sčítat a odčítat.

Příkazy

Aktuální pozice
joint herej()

Vrátí aktuální pozici ramene.



Absolutní pozice
joint abs(<joint jPozition>)

Vrací absolutní hodnotu pozice jPozition. To lze využít například pro testování zda je rameno v blízkosti některého bodu.

příklad
jReference = {90, 45, 45, 0, 0, 0}
jMaxDistance = {5, 5, 5, 5, 0, 0}
j = herej()
//zjistí zda jsou všechny osy méně než 5 stupňů od referenční pozice
if(!(abs(j - jReference) < jMaxDistance))
  popUpMsg("Rameno je prilis vzdaleno od referencni pozice!")
endIf


Rozsah
bool isInRange(<joint jPozition>)

Testuje, zda je pozice bodu jPozition v softwarovém rozsahu ramene. Pokud je pozice ramene mimo softwarový rozsah ramene, nemůže rameno vykonávat pohyb pomocí VAL3 příkazů a musí být manuálně přesunuto opět do pozice, které je v softwarovém rozsahu.

příklad
//zjistí zda je pozice ramene v softwarovém rozsahu
if isInRange(herej())==false
  popUpMsg("Presunte rameno zpet do pracovni oblasti ramene.")
endIf


Typ frame

Typ frame slouží k definování pozice referenčních rámů v pracovním prostoru. Typ frame je strukturovaný typ s jedním přístupným polem.

Referenční rám je vždy definován při jeho inicializaci. Rám word je vždy definován ve VAL3 aplikaci. Referenční rám je vždy spojen s rámem word, ať už přímo nebo prostřednictvím jiných rámů.

Příklad propojení jednotlivých referenčních rámů.

Použití

Použití referenčních rámů je doporučeno v následujících situacích:

Příkazy

Nastavení rámu
num setFrame(<point pOrigin>, <point pAxisOx>, <point pPlaneOxy>, <frame& fResult>)

Vypočítá souřadnice rámu fResult z počátku jeho bodu pOrigin, bodu pAxisOn a bodu pPlaneOxy.

Návratové hodnoty funkce jsou:
0: Žádná chyba
-1: Bod pAxisOx je příliš blízko počátku
-2: Bod pAxisOxy je příliš blízko bodu pAxisOx



Pozice rámu
trsf position(<frame tFrame>, <frame fReference>)

Vrací souřadnice rámu tFrame v referenčním rámu fReference.



Typ tool

Typ tool slouží k definování geometrie nástroje a jeho akcí. Jedná se o strukturovaný typ. Základní nástroj proměnné tool je definován při jeho inicializaci. Nástroj flange je vždy definován ve VAL3 aplikaci, pro typ tool. Každý nástroj tool je spojený s nástrojem flange, a to buď přímo nebo prostřednictvím jiného nástroje.

Výstupem nástroje je implicitně systémový výstup io:valve1, čas pro zavření a otevření čelistí je 0 a základní nástroj je flange.

Použití nástrojů v aplikaci je doporučeno zejména v následujících případech:

Operátory, které lze využít pro tento typ jsou 3. Přiřazení hodnoty ("="), porovnání dvou typů tool ("==") a test nerovnosti ("!=").

Příkazy

Otevření nástroje
void open(<tool tTool>)

Otevírá čelisti nástroje tTool tím, že nastaví hodnotu jejich výstupu na true. Před otevřením nástroje, systém čeká na dokončení pohybu ramene (podobně jako příkaz waitEndMove.
Tato instrukce nezajišťuje, že bude pozice ramene stabilizována v jeho finální pozici, předtím než je nástroj aktivován. Pokud je potřeba čekat na dokončení stabilizace pohybu, lze využít instrukce isSettled.



Zavření nástroje
void close(<tool tTool>)

Zavře čelisti nástroje tTool nastavením hodnoty jejich výstupu na false. Před zavřením nástroje systém čeká na dokončení pohybu ramene (podobně jako příkaz waitEndMove.
Tato instrukce nezajišťuje, že bude pozice ramene stabilizována v jeho finální pozici, předtím než je nástroj aktivován. Pokud je potřeba čekat na dokončení stabilizace pohybu, lze využít instrukce isSettled.



Pozice
trsf position(<tool tTool>, <tool tReference>)

Tato instrukce vrací souřadnice nástroje tTool do referenčního nástroje tReference. Chyba je generována pokud tTool nebo tReference nemají žádné referenční rámy.



Typ point

Typ point se používá pro definování pozice a orientace robota. Jedná se o strukturovaný typ. Referenční rám typu point je typu frame, který je definován při inicializaci. Každý bod typu point musí mít referenční rám, jinak je generována chyba.

Varonání

Typ point nemá defaultně přiřazen žádný rám, před jeho použitím proto musí být inicializován z jiného bodu.

Příkazy

Vzdálenost mezi body
num distance(<point pPosition1>, <point pPosition2>)

Tato instrukce vrací zzdálenost bodů pPosition1 a pPosition2, pokud jeden z bodů nemá žádný referenční rám, je generována chyba.



Geometrická transformace
point compoce(<point pPosition>, <frame fReference>, <trsf trTransformation>)

Vrací pPosition s referenčním rámem fReference, na který byla aplikována geometrická transformace trTransformation. Pokud pPosition nemá žádný referenční rám, je generována chyba.



appro
point appro(<point pPosition>, <trsf trTransformation>)

Tato instrukce vrací upravený bod pPosition pomocí geometrické transformace trTransformation. Transformace je definovaná relativně na referenční rám bodu pPosition.

Příklad
point p
point q
q = appro(p, { 0, 0, -100, 0, 0, 0 })

Instrukce appro přiřadí bodu q bod p, posunutý na ose z o 100mm.



Aktuální pozice
point here(<tool tTool>, <frame fReference>)

Vrací aktuální pozici nástroje tTool v referenčním rámu fReference.



Aktuální transformace
trsf position(<point pPosition>, <frame fReference>)

Vrací souřadnice pPosition v referenčním rámu fReference. Pokud nemá pPosition žádný referenční rám, je generována chyba.



Převod bodu joint na bod point
point jointToPoint(<tool tTool>, <frame fReference>, <joint jPosition>)

Vrací pozici nástroje tTool v referenčním rámu fReference, kde rameno má pozici jPosition typu joint. Návratový referenční rám je fReference.



Převod bodu point na bod joint
point pointToJoint(<tool tTool>, <joint jInitial>, <point pPosition>, <joint& jResult>)

Tato instrukce přepočítá pozici pPosition na odpovídající pozici jResult typu joint. Instrukce vrací true, pokud byla aktualizována hodnota jResult nebo vrací false pokud se nepovedlo bod převést.